home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / GFA basic training.adf / Erweiterung / SCROLL_COPPER_SCHATTEN.LST < prev    next >
File List  |  1989-06-01  |  4KB  |  179 lines

  1. ' Scroll-Programm + Diagonal + Copper + Schatten
  2. ' Mit Graphics-Library Routinen
  3. ' Und Copper Farben unter der Laufschrift
  4. '
  5. ' Bildschirminitialisierung
  6. '
  7. OPENS 1,0,0,350,256,2,0
  8. adr%=SCREEN(1)+84
  9. lÄufe|=1
  10. text$=" GFA-Basic präsentiert: einen Test-String zum Scrollen von Texten im Screen ohne Window !!! Ist Alles Ready für mehr Text? Aber klar!!!!!              "
  11. text$=text$+" Was ist das denn für ein Schatten ????"+SPACE$(28)
  12. zeile|=215
  13. diag|=1
  14. ' Das Hauptprogramm
  15. @usercop_lÄnge
  16. @memory_copperbereit
  17. @user_copper_an
  18. @scroll_it(lÄufe|,text$,zeile|,adr%,diag|)
  19. @user_copper_aus
  20. @aus
  21. EDIT
  22. '                Scroll-Routine
  23. PROCEDURE scroll_it(max_lauf|,text$,pix_zeile|,r_adr%,diag|)
  24.   lÄnge|=LEN(text$)
  25.   ~Forbid()
  26.   RASTPORT adr%
  27.   REPEAT
  28.     textpos%=VARPTR(text$)
  29.     FOR i|=1 TO lÄnge|
  30.       ~Move(adr%,340,pix_zeile|+7)
  31.       ~Text(adr%,textpos%+i|,1)
  32.       '
  33.       FOR j|=0 TO 1
  34.         ~WaitTOF()
  35.         ~ScrollRaster(adr%,6,diag|,0,pix_zeile|-120,350,pix_zeile|+8)
  36.       NEXT j|
  37.       '
  38.     NEXT i|
  39.     INC loops|
  40.   UNTIL loops|=max_lauf|
  41. RETURN
  42. PROCEDURE aus
  43.   ~Permit()
  44.   CLOSES 1
  45. RETURN
  46. '                User-Copper
  47. > PROCEDURE datas
  48.   DATA $0180,$0000
  49.   DATA $0102,&x0000000000000011
  50.   DATA $d701,$fffe
  51.   DATA $0182,$0000
  52.   DATA $0186,$0f44
  53.   DATA $0184,$0f44
  54.   DATA $0180,$0f00
  55.   DATA $d801,$fffe
  56.   DATA $0180,$0f10
  57.   DATA $d901,$fffe
  58.   DATA $0180,$0f20
  59.   DATA $da01,$fffe
  60.   DATA $0180,$0f40
  61.   DATA $db01,$fffe
  62.   DATA $0180,$0f60
  63.   DATA $dc01,$fffe
  64.   DATA $0180,$0f70
  65.   DATA $dd01,$fffe
  66.   DATA $0180,$0f80
  67.   DATA $de01,$fffe
  68.   DATA $0180,$0f90
  69.   DATA $df01,$fffe
  70.   DATA $0180,$0fa0
  71.   DATA $e001,$fffe
  72.   DATA $0180,$0fb0
  73.   DATA $e101,$fffe
  74.   DATA $0180,$0fc0
  75.   DATA $e201,$fffe
  76.   DATA $0180,$0fd0
  77.   DATA $e301,$fffe
  78.   DATA $0180,$0fe0
  79.   DATA $e401,$fffe
  80.   DATA $0180,$0ff0
  81.   DATA $e501,$fffe
  82.   DATA $0180,$0ff1
  83.   DATA $e601,$fffe
  84.   DATA $0180,$0ff2
  85.   DATA $e701,$fffe
  86.   DATA $0180,$0ff3
  87.   DATA $e801,$fffe
  88.   DATA $0180,$0ff4
  89.   DATA $e901,$fffe
  90.   DATA $0180,$0ff5
  91.   DATA $ea01,$fffe
  92.   DATA $0180,$0ef5
  93.   DATA $eb01,$fffe
  94.   DATA $0180,$0df5
  95.   DATA $ec01,$fffe
  96.   DATA $0180,$0cf5
  97.   DATA $ed01,$fffe
  98.   DATA $0180,$0bf4
  99.   DATA $ee01,$fffe
  100.   DATA $0180,$0af3
  101.   DATA $ef01,$fffe
  102.   DATA $0180,$09f2
  103.   DATA $f001,$fffe
  104.   DATA $0180,$08f1
  105.   DATA $f101,$fffe
  106.   DATA $0180,$07f2
  107.   DATA $f201,$fffe
  108.   DATA $0180,$06e3
  109.   DATA $f301,$fffe
  110.   DATA $0180,$06d3
  111.   DATA $f401,$fffe
  112.   DATA $0180,$06c3
  113.   DATA $f501,$fffe
  114.   DATA $0180,$06b3
  115.   DATA $f601,$fffe
  116.   DATA $0180,$06a3
  117.   DATA $f801,$fffe
  118.   DATA $0180,$0693
  119.   DATA $f901,$fffe
  120.   DATA $0180,$0683
  121.   DATA $fa01,$fffe
  122.   DATA $0180,$0673
  123.   DATA $fb01,$fffe
  124.   DATA $0180,$0664
  125.   DATA $fc01,$fffe
  126.   DATA $0180,$0655
  127.   DATA $fd01,$fffe
  128.   DATA $0180,$0555
  129.   DATA $fe01,$fffe
  130.   DATA $0180,$0546
  131.   DATA $ff01,$fffe
  132.   DATA $0180,$0
  133.   DATA $ffff
  134. RETURN
  135. PROCEDURE usercop_lÄnge
  136.   DO
  137.     READ x%
  138.     EXIT IF x%=&HFFFF
  139.     INC anz&    ! Anzahl Worte
  140.   LOOP
  141.   MUL anz&,2    ! Anzahl Bytes
  142.   RESTORE
  143. RETURN
  144. PROCEDURE memory_copperbereit
  145.   altcop%=LPEEK(_GfxBase+50)   ! Copper-Auto-Vector relativ zu GFXBASE retten
  146.   mem&=76+anz&
  147.   u_copadr%=MALLOC(mem&,2)
  148.   neu_copadr%=u_copadr%
  149.   startcop%=altcop%+84
  150.   ' Startliste des Systems kopieren
  151.   BMOVE startcop%,neu_copadr%,60
  152.   ' Unsere Liste
  153.   CLR zeiger&,x%
  154.   RESTORE
  155.   ' Unsern Adress-Zeiger erhöhen
  156.   ADD neu_copadr%,60
  157.   DO
  158.     READ x%
  159.     EXIT IF x%=&HFFFF
  160.     DPOKE neu_copadr%+zeiger&,x%
  161.     ADD zeiger&,2
  162.   LOOP
  163.   ' End Liste des Systems kopieren
  164.   ADD startcop%,60
  165.   ADD neu_copadr%,anz&
  166.   BMOVE startcop%,neu_copadr%,16
  167. RETURN
  168. '
  169. PROCEDURE user_copper_an
  170.   VSYNC                         ! Oder ~WaitTOF()
  171.   LONG{_GfxBase+50}=(u_copadr%)
  172. RETURN
  173. '
  174. PROCEDURE user_copper_aus
  175.   VSYNC
  176.   LONG{_GfxBase+50}=(altcop%)  ! Alten Vector zurück
  177.   x%=MFREE(u_copadr%,mem&)
  178. RETURN
  179.